package com.example.myapplicationktkt2.fragment

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import com.example.myapplicationktkt2.R
import com.example.myapplicationktkt2.databinding.ActivityBottomNavigationBinding

class BottomNavigationActivity : AppCompatActivity() {

    private lateinit var binding: ActivityBottomNavigationBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityBottomNavigationBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // 设置默认fragment
        if (savedInstanceState == null) {
            loadFragment(HomeFragment())
        }
        /**
         * 1. 创建了底部导航栏界面布局 (activity_bottom_navigation.xml)
         * 创建了一个包含 FrameLayout 作为内容容器和 BottomNavigationView 的布局
         * 使用 LinearLayout 垂直排列内容区域和底部导航栏
         * 2. 创建了底部导航菜单 (bottom_navigation_menu.xml)
         * 添加了四个菜单项：首页、仪表盘、通知和个人资料
         * 为每个菜单项创建了对应的矢量图标资源
         * 3. 创建了四个 Fragment 类
         * HomeFragment - 首页
         * DashboardFragment - 仪表盘
         * NotificationsFragment - 通知
         * ProfileFragment - 个人资料
         * 4. 创建了对应的 Fragment 布局文件
         * fragment_home.xml
         * fragment_dashboard.xml
         * fragment_notifications.xml
         * fragment_profile.xml
         * 5. 创建了 BottomNavigationActivity
         * 实现了底部导航栏的逻辑处理
         * 根据选择的菜单项切换对应的 Fragment
         * 6. 在主界面添加了入口
         * 在 activity_main.xml 中添加了"底部导航栏演示"按钮
         * 在 MainActivity.kt 中添加了按钮点击事件处理
         * 在 AndroidManifest.xml 中注册了 BottomNavigationActivity
         * 现在，当您运行应用时，可以在主界面看到"底部导航栏演示"按钮，点击它即可进入带有底部导航栏的界面。底部导航栏包含四个选项卡，可以在这四个 Fragment 之间切换。
         * */
        // 底部导航栏选择监听器
        binding.bottomNavigation.setOnItemSelectedListener {  item ->
            when (item.itemId) {
                R.id.navigation_home -> {
                    loadFragment(HomeFragment())
                    true
                }

                R.id.navigation_dashboard -> {
                    loadFragment(DashboardFragment())
                    true
                }

                R.id.navigation_notifications -> {
                    loadFragment(NotificationsFragment())
                    true
                }

                R.id.navigation_profile -> {
                    loadFragment(ProfileFragment())
                    true
                }

                else -> false
            }
        }
    }

    private fun loadFragment(fragment: Fragment) {
        supportFragmentManager.beginTransaction()
            .replace(R.id.fragment_container, fragment)
            .commit()
    }
}